package model.serializer;




/**
 * @Description 所有序列化、反序列化方法都要实现Serializer接口
 * @author 14548
 */
public interface Serializer {
    Serializer DEFAULT = new JsonSerializer();

    /**
     * @Description
     * @param object 序列化对象的类型
     * @return 序列化后的字节数组
     */
    byte[] serialize(Object object);

    /**
     * @Description
     * @param clazz 对象的类型
     * @param bytes 需要反序列化的信息
     * @param <T> 对象的类型
     * @return 通过反序列化得到的对象
     */
    <T> T deserializer(Class<T> clazz, byte[] bytes);

    /**
     * @Description
     * @return 序列化算法
     */
    byte getSerializerAlgorithm();
}
